package xianchengpool;

import java.util.concurrent.*;

/**
 * @功能
 * @创建时间 2019/12/26
 * 刚开始池内无线程，来一个启动一个线程，灵活度比较高，新加任务，如果有线程等待，等待线程则会执行任务，如果没有则会再起一个线程
 * 里面线程空闲超过60s则会自动销毁，alivetime=60
 */
public class T08_CachedPool {
    public static void main(String[] args) throws InterruptedException {
        ExecutorService service = Executors.newCachedThreadPool();
        System.out.println(service);
        Future future = null;
        service.execute(()->{
        int i = 3 / 0;
        });
        for (int i = 0;i<3;i++){
             future = service.submit(()->{
                                try {
                    TimeUnit.MILLISECONDS.sleep(500);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                System.out.println(Thread.currentThread().getName());
                                return 1/0;
            });
//            try {
//                System.err.println(future.get());
//            } catch (ExecutionException e) {
//                e.printStackTrace();
//            }

//            service.execute(()->{
//                try {
//                    TimeUnit.MILLISECONDS.sleep(500);
//                } catch (InterruptedException e) {
//                    e.printStackTrace();
//                }
//                System.out.println(Thread.currentThread().getName());
//            });
        }

        System.out.println(service);
        TimeUnit.SECONDS.sleep(80);
        System.out.println(service);
    }
}
